package xianchenglock1;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @功能
 * @创建时间 2019/12/18
 * 实现一个容器，提供两个方法，add,size
 * 写两个线程，线程1添加10个元素到容器中，线程二实现监控元素的个数，当个数为5个时，线程二给出提示并结束
 * 分析下面这个程序，能完成这个功能吗
 * 缺点，容易误差，浪费cpu
 */
public class Mycontainer1 {
  volatile  List lists = new ArrayList();
    public void add(Object o){
        lists.add(o);
    }
    public int size(){
        return lists.size();
    }
    Lock lock = new ReentrantLock();

    public static void main(String[] args) {
        Mycontainer1 c = new Mycontainer1();
      new Thread(()->{
            for(int i=0;i<10;i++){
                c.add(new Object());
                System.out.println("add"+i);
               try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        },"t1").start();

         new Thread(()->{
     while (true){
       if(c.size()==5){
           break;
       }

         }
             System.out.println("del"+c.size());
        },"t2").start();
    }
}
